class Solution {
    /**
     * 思路: 遍历每个位置,并维护 最远可达距离 
     * 值得注意的是 只有当前位置可达才能够 update这个距离
     */
    public boolean canJump(int[] nums) {
        // 最远可达距离
        int maxIndex = 0;

        for (int i = 0; i < nums.length; i++) {
            // update 最远可达距离
            // 值得注意的是当前位置可能是不可达的
            if( maxIndex >= i )
                maxIndex = Math.max(maxIndex, i+nums[i]);
        }

        // System.out.println(maxIndex);
        return maxIndex >= (nums.length-1);
    }
}
//  1 0 1 0